import { IPSDataEntity } from '../ipsdata-entity';
import { IPSDEUtil } from './ipsdeutil';
import { IPSSysSFPlugin } from '../../res/ipssys-sfplugin';
import { IPSSubSysServiceAPI } from '../../service/ipssub-sys-service-api';
import { PSModelObjectImpl } from '../../psmodel-object-impl';

export class PSDEUtilImpl extends PSModelObjectImpl implements IPSDEUtil {
  get codeName(): string {
    return this.M.codeName;
  }

  get dynaModelFilePath(): string {
    return this.M.dynaModelFilePath;
  }

  get extendMode(): 0 | 2 {
    return this.M.extendMode != null ? this.M.extendMode : 0;
  }

  get memo(): string {
    return this.M.memo;
  }

  get name(): string {
    return this.M.name;
  }

  protected pssubsysserviceapi: IPSSubSysServiceAPI | null = null;

  getPSSubSysServiceAPI(): IPSSubSysServiceAPI | null {
    if (this.pssubsysserviceapi != null) return this.pssubsysserviceapi;
    const value = this.M.getPSSubSysServiceAPI;
    if (value == null) {
      return null;
    }
    this.pssubsysserviceapi = this.getPSModel4('service.IPSSubSysServiceAPI', value, 'getPSSubSysServiceAPI') as IPSSubSysServiceAPI;
    return this.pssubsysserviceapi;
  }

  get psSubSysServiceAPI(): IPSSubSysServiceAPI | null {
    return this.getPSSubSysServiceAPI();
  }

  getPSSubSysServiceAPIMust(): IPSSubSysServiceAPI {
    const value = this.getPSSubSysServiceAPI();
    if (value == null) {
      throw new Error('未指定外部服务接口');
    }
    return value;
  }

  protected pssyssfplugin: IPSSysSFPlugin | null = null;

  getPSSysSFPlugin(): IPSSysSFPlugin | null {
    if (this.pssyssfplugin != null) return this.pssyssfplugin;
    const value = this.M.getPSSysSFPlugin;
    if (value == null) {
      return null;
    }
    this.pssyssfplugin = this.getPSModel4('res.IPSSysSFPlugin', value, 'getPSSysSFPlugin') as IPSSysSFPlugin;
    return this.pssyssfplugin;
  }

  get psSysSFPlugin(): IPSSysSFPlugin | null {
    return this.getPSSysSFPlugin();
  }

  getPSSysSFPluginMust(): IPSSysSFPlugin {
    const value = this.getPSSysSFPlugin();
    if (value == null) {
      throw new Error('未指定后台扩展插件');
    }
    return value;
  }

  get userCat(): string {
    return this.M.userCat;
  }

  get userTag(): string {
    return this.M.userTag;
  }

  get userTag2(): string {
    return this.M.userTag2;
  }

  get userTag3(): string {
    return this.M.userTag3;
  }

  get userTag4(): string {
    return this.M.userTag4;
  }

  protected utilpsde: IPSDataEntity | null = null;

  getUtilPSDE(): IPSDataEntity | null {
    if (this.utilpsde != null) return this.utilpsde;
    const value = this.M.getUtilPSDE;
    if (value == null) {
      return null;
    }
    this.utilpsde = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE') as IPSDataEntity;
    return this.utilpsde;
  }

  get utilPSDE(): IPSDataEntity | null {
    return this.getUtilPSDE();
  }

  getUtilPSDEMust(): IPSDataEntity {
    const value = this.getUtilPSDE();
    if (value == null) {
      throw new Error('未指定功能实体');
    }
    return value;
  }

  protected utilpsde10: IPSDataEntity | null = null;

  getUtilPSDE10(): IPSDataEntity | null {
    if (this.utilpsde10 != null) return this.utilpsde10;
    const value = this.M.getUtilPSDE10;
    if (value == null) {
      return null;
    }
    this.utilpsde10 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE10') as IPSDataEntity;
    return this.utilpsde10;
  }

  get utilPSDE10(): IPSDataEntity | null {
    return this.getUtilPSDE10();
  }

  getUtilPSDE10Must(): IPSDataEntity {
    const value = this.getUtilPSDE10();
    if (value == null) {
      throw new Error('未指定功能实体10');
    }
    return value;
  }

  get utilPSDE10Name(): string {
    return this.M.utilPSDE10Name;
  }

  protected utilpsde11: IPSDataEntity | null = null;

  getUtilPSDE11(): IPSDataEntity | null {
    if (this.utilpsde11 != null) return this.utilpsde11;
    const value = this.M.getUtilPSDE11;
    if (value == null) {
      return null;
    }
    this.utilpsde11 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE11') as IPSDataEntity;
    return this.utilpsde11;
  }

  get utilPSDE11(): IPSDataEntity | null {
    return this.getUtilPSDE11();
  }

  getUtilPSDE11Must(): IPSDataEntity {
    const value = this.getUtilPSDE11();
    if (value == null) {
      throw new Error('未指定功能实体11');
    }
    return value;
  }

  protected utilpsde12: IPSDataEntity | null = null;

  getUtilPSDE12(): IPSDataEntity | null {
    if (this.utilpsde12 != null) return this.utilpsde12;
    const value = this.M.getUtilPSDE12;
    if (value == null) {
      return null;
    }
    this.utilpsde12 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE12') as IPSDataEntity;
    return this.utilpsde12;
  }

  get utilPSDE12(): IPSDataEntity | null {
    return this.getUtilPSDE12();
  }

  getUtilPSDE12Must(): IPSDataEntity {
    const value = this.getUtilPSDE12();
    if (value == null) {
      throw new Error('未指定功能实体12');
    }
    return value;
  }

  protected utilpsde13: IPSDataEntity | null = null;

  getUtilPSDE13(): IPSDataEntity | null {
    if (this.utilpsde13 != null) return this.utilpsde13;
    const value = this.M.getUtilPSDE13;
    if (value == null) {
      return null;
    }
    this.utilpsde13 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE13') as IPSDataEntity;
    return this.utilpsde13;
  }

  get utilPSDE13(): IPSDataEntity | null {
    return this.getUtilPSDE13();
  }

  getUtilPSDE13Must(): IPSDataEntity {
    const value = this.getUtilPSDE13();
    if (value == null) {
      throw new Error('未指定功能实体13');
    }
    return value;
  }

  protected utilpsde14: IPSDataEntity | null = null;

  getUtilPSDE14(): IPSDataEntity | null {
    if (this.utilpsde14 != null) return this.utilpsde14;
    const value = this.M.getUtilPSDE14;
    if (value == null) {
      return null;
    }
    this.utilpsde14 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE14') as IPSDataEntity;
    return this.utilpsde14;
  }

  get utilPSDE14(): IPSDataEntity | null {
    return this.getUtilPSDE14();
  }

  getUtilPSDE14Must(): IPSDataEntity {
    const value = this.getUtilPSDE14();
    if (value == null) {
      throw new Error('未指定功能实体14');
    }
    return value;
  }

  protected utilpsde15: IPSDataEntity | null = null;

  getUtilPSDE15(): IPSDataEntity | null {
    if (this.utilpsde15 != null) return this.utilpsde15;
    const value = this.M.getUtilPSDE15;
    if (value == null) {
      return null;
    }
    this.utilpsde15 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE15') as IPSDataEntity;
    return this.utilpsde15;
  }

  get utilPSDE15(): IPSDataEntity | null {
    return this.getUtilPSDE15();
  }

  getUtilPSDE15Must(): IPSDataEntity {
    const value = this.getUtilPSDE15();
    if (value == null) {
      throw new Error('未指定功能实体15');
    }
    return value;
  }

  protected utilpsde16: IPSDataEntity | null = null;

  getUtilPSDE16(): IPSDataEntity | null {
    if (this.utilpsde16 != null) return this.utilpsde16;
    const value = this.M.getUtilPSDE16;
    if (value == null) {
      return null;
    }
    this.utilpsde16 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE16') as IPSDataEntity;
    return this.utilpsde16;
  }

  get utilPSDE16(): IPSDataEntity | null {
    return this.getUtilPSDE16();
  }

  getUtilPSDE16Must(): IPSDataEntity {
    const value = this.getUtilPSDE16();
    if (value == null) {
      throw new Error('未指定功能实体16');
    }
    return value;
  }

  protected utilpsde17: IPSDataEntity | null = null;

  getUtilPSDE17(): IPSDataEntity | null {
    if (this.utilpsde17 != null) return this.utilpsde17;
    const value = this.M.getUtilPSDE17;
    if (value == null) {
      return null;
    }
    this.utilpsde17 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE17') as IPSDataEntity;
    return this.utilpsde17;
  }

  get utilPSDE17(): IPSDataEntity | null {
    return this.getUtilPSDE17();
  }

  getUtilPSDE17Must(): IPSDataEntity {
    const value = this.getUtilPSDE17();
    if (value == null) {
      throw new Error('未指定功能实体17');
    }
    return value;
  }

  protected utilpsde18: IPSDataEntity | null = null;

  getUtilPSDE18(): IPSDataEntity | null {
    if (this.utilpsde18 != null) return this.utilpsde18;
    const value = this.M.getUtilPSDE18;
    if (value == null) {
      return null;
    }
    this.utilpsde18 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE18') as IPSDataEntity;
    return this.utilpsde18;
  }

  get utilPSDE18(): IPSDataEntity | null {
    return this.getUtilPSDE18();
  }

  getUtilPSDE18Must(): IPSDataEntity {
    const value = this.getUtilPSDE18();
    if (value == null) {
      throw new Error('未指定功能实体18');
    }
    return value;
  }

  protected utilpsde19: IPSDataEntity | null = null;

  getUtilPSDE19(): IPSDataEntity | null {
    if (this.utilpsde19 != null) return this.utilpsde19;
    const value = this.M.getUtilPSDE19;
    if (value == null) {
      return null;
    }
    this.utilpsde19 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE19') as IPSDataEntity;
    return this.utilpsde19;
  }

  get utilPSDE19(): IPSDataEntity | null {
    return this.getUtilPSDE19();
  }

  getUtilPSDE19Must(): IPSDataEntity {
    const value = this.getUtilPSDE19();
    if (value == null) {
      throw new Error('未指定功能实体19');
    }
    return value;
  }

  protected utilpsde2: IPSDataEntity | null = null;

  getUtilPSDE2(): IPSDataEntity | null {
    if (this.utilpsde2 != null) return this.utilpsde2;
    const value = this.M.getUtilPSDE2;
    if (value == null) {
      return null;
    }
    this.utilpsde2 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE2') as IPSDataEntity;
    return this.utilpsde2;
  }

  get utilPSDE2(): IPSDataEntity | null {
    return this.getUtilPSDE2();
  }

  getUtilPSDE2Must(): IPSDataEntity {
    const value = this.getUtilPSDE2();
    if (value == null) {
      throw new Error('未指定功能实体2');
    }
    return value;
  }

  protected utilpsde20: IPSDataEntity | null = null;

  getUtilPSDE20(): IPSDataEntity | null {
    if (this.utilpsde20 != null) return this.utilpsde20;
    const value = this.M.getUtilPSDE20;
    if (value == null) {
      return null;
    }
    this.utilpsde20 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE20') as IPSDataEntity;
    return this.utilpsde20;
  }

  get utilPSDE20(): IPSDataEntity | null {
    return this.getUtilPSDE20();
  }

  getUtilPSDE20Must(): IPSDataEntity {
    const value = this.getUtilPSDE20();
    if (value == null) {
      throw new Error('未指定功能实体20');
    }
    return value;
  }

  get utilPSDE2Name(): string {
    return this.M.utilPSDE2Name;
  }

  protected utilpsde3: IPSDataEntity | null = null;

  getUtilPSDE3(): IPSDataEntity | null {
    if (this.utilpsde3 != null) return this.utilpsde3;
    const value = this.M.getUtilPSDE3;
    if (value == null) {
      return null;
    }
    this.utilpsde3 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE3') as IPSDataEntity;
    return this.utilpsde3;
  }

  get utilPSDE3(): IPSDataEntity | null {
    return this.getUtilPSDE3();
  }

  getUtilPSDE3Must(): IPSDataEntity {
    const value = this.getUtilPSDE3();
    if (value == null) {
      throw new Error('未指定功能实体3');
    }
    return value;
  }

  get utilPSDE3Name(): string {
    return this.M.utilPSDE3Name;
  }

  protected utilpsde4: IPSDataEntity | null = null;

  getUtilPSDE4(): IPSDataEntity | null {
    if (this.utilpsde4 != null) return this.utilpsde4;
    const value = this.M.getUtilPSDE4;
    if (value == null) {
      return null;
    }
    this.utilpsde4 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE4') as IPSDataEntity;
    return this.utilpsde4;
  }

  get utilPSDE4(): IPSDataEntity | null {
    return this.getUtilPSDE4();
  }

  getUtilPSDE4Must(): IPSDataEntity {
    const value = this.getUtilPSDE4();
    if (value == null) {
      throw new Error('未指定功能实体4');
    }
    return value;
  }

  get utilPSDE4Name(): string {
    return this.M.utilPSDE4Name;
  }

  protected utilpsde5: IPSDataEntity | null = null;

  getUtilPSDE5(): IPSDataEntity | null {
    if (this.utilpsde5 != null) return this.utilpsde5;
    const value = this.M.getUtilPSDE5;
    if (value == null) {
      return null;
    }
    this.utilpsde5 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE5') as IPSDataEntity;
    return this.utilpsde5;
  }

  get utilPSDE5(): IPSDataEntity | null {
    return this.getUtilPSDE5();
  }

  getUtilPSDE5Must(): IPSDataEntity {
    const value = this.getUtilPSDE5();
    if (value == null) {
      throw new Error('未指定功能实体5');
    }
    return value;
  }

  get utilPSDE5Name(): string {
    return this.M.utilPSDE5Name;
  }

  protected utilpsde6: IPSDataEntity | null = null;

  getUtilPSDE6(): IPSDataEntity | null {
    if (this.utilpsde6 != null) return this.utilpsde6;
    const value = this.M.getUtilPSDE6;
    if (value == null) {
      return null;
    }
    this.utilpsde6 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE6') as IPSDataEntity;
    return this.utilpsde6;
  }

  get utilPSDE6(): IPSDataEntity | null {
    return this.getUtilPSDE6();
  }

  getUtilPSDE6Must(): IPSDataEntity {
    const value = this.getUtilPSDE6();
    if (value == null) {
      throw new Error('未指定功能实体6');
    }
    return value;
  }

  get utilPSDE6Name(): string {
    return this.M.utilPSDE6Name;
  }

  protected utilpsde7: IPSDataEntity | null = null;

  getUtilPSDE7(): IPSDataEntity | null {
    if (this.utilpsde7 != null) return this.utilpsde7;
    const value = this.M.getUtilPSDE7;
    if (value == null) {
      return null;
    }
    this.utilpsde7 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE7') as IPSDataEntity;
    return this.utilpsde7;
  }

  get utilPSDE7(): IPSDataEntity | null {
    return this.getUtilPSDE7();
  }

  getUtilPSDE7Must(): IPSDataEntity {
    const value = this.getUtilPSDE7();
    if (value == null) {
      throw new Error('未指定功能实体7');
    }
    return value;
  }

  get utilPSDE7Name(): string {
    return this.M.utilPSDE7Name;
  }

  protected utilpsde8: IPSDataEntity | null = null;

  getUtilPSDE8(): IPSDataEntity | null {
    if (this.utilpsde8 != null) return this.utilpsde8;
    const value = this.M.getUtilPSDE8;
    if (value == null) {
      return null;
    }
    this.utilpsde8 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE8') as IPSDataEntity;
    return this.utilpsde8;
  }

  get utilPSDE8(): IPSDataEntity | null {
    return this.getUtilPSDE8();
  }

  getUtilPSDE8Must(): IPSDataEntity {
    const value = this.getUtilPSDE8();
    if (value == null) {
      throw new Error('未指定功能实体8');
    }
    return value;
  }

  get utilPSDE8Name(): string {
    return this.M.utilPSDE8Name;
  }

  protected utilpsde9: IPSDataEntity | null = null;

  getUtilPSDE9(): IPSDataEntity | null {
    if (this.utilpsde9 != null) return this.utilpsde9;
    const value = this.M.getUtilPSDE9;
    if (value == null) {
      return null;
    }
    this.utilpsde9 = this.getPSModel4('dataentity.IPSDataEntity', value, 'getUtilPSDE9') as IPSDataEntity;
    return this.utilpsde9;
  }

  get utilPSDE9(): IPSDataEntity | null {
    return this.getUtilPSDE9();
  }

  getUtilPSDE9Must(): IPSDataEntity {
    const value = this.getUtilPSDE9();
    if (value == null) {
      throw new Error('未指定功能实体9');
    }
    return value;
  }

  get utilPSDE9Name(): string {
    return this.M.utilPSDE9Name;
  }

  get utilPSDEName(): string {
    return this.M.utilPSDEName;
  }

  get utilParams(): IModel {
    return this.M.utilParams;
  }

  get utilTag(): string {
    return this.M.utilTag;
  }

  get utilTag2(): string {
    return this.M.utilTag2;
  }

  get utilType(): 'DATAAUDIT' | 'DYNASTORAGE' | 'USER' {
    return this.M.utilType;
  }

  get cls(): string {
    return 'PSDEUtilImpl';
  }

  instanceof(cls: string): boolean {
    if (cls == 'dataentity.util.IPSDEUtil') return true;
    return super.instanceof(cls);
  }
}
